#if 0

const int pingPin = 7;

const unsigned char sinlut[] PROGMEM = 
{
    128, 131, 134, 137, 140, 143, 146, 149, 152, 156, 159, 162, 165, 168, 171, 174, 
    176, 179, 182, 185, 188, 191, 193, 196, 199, 201, 204, 206, 209, 211, 213, 216, 
    218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 237, 239, 240, 242, 243, 244, 
    246, 247, 248, 249, 250, 251, 252, 252, 253, 254, 254, 255, 255, 255, 255, 255, 
    255, 255, 255, 255, 255, 255, 254, 254, 253, 252, 252, 251, 250, 249, 248, 247, 
    246, 245, 243, 242, 240, 239, 237, 236, 234, 232, 230, 228, 227, 225, 222, 220, 
    218, 216, 214, 211, 209, 206, 204, 201, 199, 196, 193, 191, 188, 185, 182, 180, 
    177, 174, 171, 168, 165, 162, 159, 156, 153, 150, 146, 143, 140, 137, 134, 131, 
    128, 125, 121, 118, 115, 112, 109, 106, 103, 100,  97,  94,  91,  88,  85,  82, 
     79,  76,  73,  70,  67,  65,  62,  59,  57,  54,  51,  49,  46,  44,  42,  39, 
     37,  35,  33,  31,  29,  27,  25,  23,  21,  20,  18,  16,  15,  13,  12,  11, 
      9,   8,   7,   6,   5,   4,   3,   3,   2,   1,   1,   0,   0,   0,   0,   0, 
      0,   0,   0,   0,   0,   0,   1,   1,   2,   3,   3,   4,   5,   6,   7,   8, 
      9,  10,  12,  13,  14,  16,  18,  19,  21,  23,  24,  26,  28,  30,  32,  35, 
     37,  39,  41,  44,  46,  48,  51,  53,  56,  59,  61,  64,  67,  70,  72,  75, 
     78,  81,  84,  87,  90,  93,  96,  99, 102, 105, 108, 111, 115, 118, 121, 124 
};

byte Ping()
{
  long duration;
    
  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  return duration / 29 /2;
}

byte Scan[128];
byte ScanIndex = 0;

void InitScan()
{
  for(byte i=0;i<128;i++)
  {
    Scan[i] = 0;
  }
  ScanIndex = 0;
}

void DrawCircularScan()
{
  //KS108_BenchmarkPrintChar3x6();
  for(byte i=0;i<128;i++)
  {
    //KS108_lineBresenham(0,i,63, i*2);
    KS108_SetPixel(  32 + 32 - ( pgm_read_byte( &sinlut[i] ) >> 1 ), -64 + 64 + ( pgm_read_byte( &sinlut[(i+64) & 0xff] ) >> 1 ), SET );
  }
}

void DrawLinearScan()
{
  KS108_SetPixel( Scan[ ScanIndex ], ScanIndex, CLEAR );
  Scan[ ScanIndex ] = Ping()>>2;
  KS108_SetPixel( Scan[ ScanIndex ], ScanIndex, SET );

  char str[10];  
  sprintf( str, "%u CM  ", Scan[ ScanIndex ] );
  KS108_Locate( 7*8,10 );
  KS0108_PrintStr3x6( str );

  ScanIndex++;

  if ( ScanIndex == 128 )
    ScanIndex = 0;
}


void DrawLinearScanSide()
{
  KS108_SetPixel( ScanIndex, Scan[ ScanIndex ], CLEAR );
  Scan[ ScanIndex ] = Ping()>>1;
  KS108_SetPixel( ScanIndex, Scan[ ScanIndex ], SET );

  char str[10];  
  sprintf( str, "%u CM  ", Scan[ ScanIndex ] );
  KS108_Locate( 7*8,10 );
  KS0108_PrintStr3x6( str );

  ScanIndex++;

  if ( ScanIndex == 64 )
    ScanIndex = 0;
}

#endif
